When transmitting or storing data, an error correction code is added to the data. The data to which the error correction code is added is decoded by an error correction decoder incorporated in a receiver or a memory controller.
If a few bit errors are included in received data or read data, the data can be accurately reconstituted by correcting the bit errors using the error correction code.
As an error correction code, an LDPC code is known. LDPC codes excel at correcting errors. Regarding LDPC codes, a phenomenon called “error floor” is known. When error floor is observed, a decoding error rate almost does not reduce in a region in which a bit error rate before decoding is below a certain level. Error floor is caused by an error event called “trapping set” during the process of iterative decoding using LDPC codes. When trapping set occurs, the iterative decoding does not function properly. By reducing a decoding error rate in the error floor region, the LDPC codes can exhibit better performance of error correction.